/*******************************************************************************
* Copyright (c) 2006, 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*********************************************************************************/

// This file was generated by LPG

package org.eclipse.cdt.internal.core.lrparser.xlc.c;

public class XlcCParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCParsersym {

    public interface IsKeyword {
        public final static byte isKeyword[] = {0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0
        };
    };
    public final static byte isKeyword[] = IsKeyword.isKeyword;
    public final boolean isKeyword(int index) { return isKeyword[index] != 0; }

    public interface BaseCheck {
        public final static short baseCheck[] = {0,
            0,0,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,3,1,
            1,4,4,3,3,2,2,4,1,0,
            1,1,2,2,2,2,2,2,2,2,
            2,4,1,4,1,3,3,3,1,3,
            3,1,3,3,1,3,3,3,3,1,
            3,3,1,3,1,3,1,3,1,3,
            1,3,1,5,1,3,3,3,3,3,
            3,3,3,3,3,3,1,1,2,1,
            0,1,3,1,1,1,1,1,1,1,
            1,3,4,3,2,4,1,2,1,1,
            1,2,5,7,5,1,0,7,2,5,
            9,8,3,2,2,2,3,2,4,2,
            2,2,2,2,1,1,1,1,2,1,
            2,2,2,1,2,2,1,2,2,1,
            2,2,1,2,2,1,3,1,3,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            6,8,0,0,1,1,3,3,3,0,
            1,0,1,2,4,2,1,1,1,3,
            1,1,2,3,7,8,0,1,0,1,
            3,1,3,1,1,1,1,1,1,3,
            1,1,1,1,1,3,1,2,2,1,
            5,3,1,3,5,1,3,1,3,2,
            4,3,5,4,6,6,3,5,1,3,
            4,5,6,0,1,2,1,3,1,1,
            3,2,1,1,1,1,2,1,2,3,
            1,1,1,3,1,2,2,2,3,4,
            5,1,1,7,3,0,0,1,1,3,
            3,4,1,1,2,3,2,3,2,1,
            0,1,2,1,1,1,1,1,2,1,
            3,6,4,2,4,1,1,1,1,2,
            6,3,1,3,1,4,0,1,1,1,
            3,1,0,4,3,1,2,1,3,4,
            4,4,6,1,0,1,3,1,3,0,
            1,4,5,2,4,2,4,3,3,5,
            3,4,3,1,2,2,2,4,2,1,
            1,2,2,3,2,2,3,1,1,1,
            1,1,1,1,2,5,3,1,1,1,
            1,1,2,4,5,1,1,1,1,1,
            1,1,1,1,1,1,1,1,2,1,
            0,1,0,1,1,1,1,1,1,1,
            -115,0,-2,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-8,0,
            0,0,0,0,0,-66,-94,0,0,-54,
            0,0,0,-33,0,-252,0,0,0,0,
            0,-89,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-35,
            0,0,0,0,0,0,-49,0,0,0,
            -87,-12,0,0,0,0,0,0,0,-70,
            0,0,0,0,0,0,0,0,0,-128,
            -11,0,0,0,0,0,0,0,0,-14,
            -43,-6,0,0,-52,0,-352,-266,0,0,
            0,0,0,0,-15,0,0,0,0,-3,
            0,0,0,-16,-67,0,0,0,0,0,
            0,0,0,0,-365,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-145,
            0,0,0,0,0,-55,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -236,0,0,0,0,0,0,0,0,0,
            0,0,0,-27,0,0,-56,0,-158,0,
            0,0,0,0,0,0,0,-51,0,0,
            0,0,0,0,0,0,0,0,0,-50,
            -4,0,0,0,0,0,0,0,0,-233,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-178,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-185,0,-117,0,-28,-232,0,
            -29,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-309,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-39,0,0,
            0,0,0,0,-40,0,0,0,0,-30,
            0,0,0,0,0,0,0,-71,0,0,
            0,0,0,0,0,0,-258,-173,0,0,
            0,0,0,0,0,0,0,-359,0,0,
            0,0,0,0,0,0,-31,0,-95,-121,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-126,0,0,
            0,0,0,0,0,0,-5,-270,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-262,0,0,0,-279,-116,0,
            0,0,-118,0,-361,0,0,0,0,0,
            0,0,0,-339,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -234,0,0,0,0,0,0,0,0,-36,
            -42,0,0,0,0,0,0,0,-45,0,
            0,0,0,0,0,-122,0,0,-260,0,
            0,0,-375,0,0,0,0,0,0,0,
            0,-327,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-46,0,
            0,0,-86,0,0,0,0,0,0,0,
            0,-48,0,0,-324,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-254,0,-53,0,0,0,0,0,0,
            -93,0,0,-65,0,0,0,0,0,-80,
            0,0,0,0,0,0,0,0,-44,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-58,0,0,0,0,-177,0,0,-151,
            0,0,0,0,0,0,0,0,0,0,
            -130,0,-124,0,0,0,0,0,0,-59,
            0,0,0,0,0,0,-60,0,0,0,
            0,0,0,0,0,0,0,-261,0,-97,
            0,0,0,0,0,0,0,0,0,0,
            -127,-119,0,0,0,-155,0,0,0,-63,
            0,0,0,-79,0,0,0,0,0,-271,
            0,-18,-81,-99,0,0,-101,0,0,0,
            0,0,0,0,0,-82,-163,0,0,0,
            0,0,0,0,0,-96,-323,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-193,0,0,-231,0,0,0,0,0,
            0,0,0,-142,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-100,0,
            0,0,-68,0,-188,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-196,-195,0,-102,0,0,0,0,0,
            0,-189,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-110,-153,-272,
            0,0,-69,0,0,0,0,0,0,0,
            0,0,0,-201,0,0,0,0,0,0,
            0,0,-152,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-273,0,
            -38,0,0,-283,0,0,0,0,0,0,
            0,0,0,-123,0,0,0,-217,0,-200,
            0,0,0,0,0,0,-129,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-144,-131,0,0,0,0,0,0,
            0,0,0,0,-348,0,0,-132,-23,-275,
            -357,-146,0,0,0,0,0,0,0,0,
            0,0,0,0,-347,0,-133,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-10,
            -202,0,0,0,0,0,-134,-111,0,0,
            0,0,-57,0,0,0,0,0,-34,0,
            -328,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -218,0,-135,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-165,0,0,-229,
            0,-112,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-287,0,0,
            -199,0,0,0,-154,0,0,-334,-172,0,
            0,0,0,0,0,0,0,0,-355,0,
            -203,0,0,0,0,0,0,0,0,0,
            -374,0,0,0,0,0,0,0,-136,0,
            0,0,0,0,0,-259,-137,0,0,0,
            0,0,-204,0,0,0,0,0,0,0,
            0,0,-161,-326,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-138,-205,0,
            0,0,0,0,0,0,0,0,-175,-240,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-139,-206,0,0,0,0,0,
            0,0,0,-237,0,0,0,0,0,0,
            0,0,-166,0,0,0,0,0,0,-140,
            -207,0,0,0,0,0,0,0,0,-257,
            0,0,-241,0,0,0,0,0,-168,0,
            0,0,0,0,0,-143,-208,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-176,0,0,0,0,0,
            0,-147,-209,0,0,0,0,0,0,0,
            0,-265,0,0,-311,0,0,0,0,0,
            -180,0,0,0,0,0,0,-148,-210,0,
            0,0,0,0,0,0,0,-335,0,0,
            -338,0,0,0,0,0,-181,0,0,0,
            0,0,0,-156,-211,0,0,0,0,0,
            0,0,0,-157,0,-362,0,0,0,0,
            0,0,-182,0,0,0,0,0,0,-159,
            -212,0,0,0,0,0,0,0,0,-354,
            0,0,-340,0,0,0,0,0,-183,0,
            0,0,0,0,0,-160,-213,0,0,0,
            0,0,0,0,0,-184,0,0,-194,0,
            0,0,0,0,-349,0,0,0,0,0,
            0,-269,0,0,0,-61,0,-358,0,-162,
            0,0,0,0,0,0,0,0,0,0,
            -164,-280,0,-167,0,0,0,0,0,0,
            -198,-367,0,0,0,0,0,0,0,-169,
            0,0,0,0,0,0,-377,0,0,0,
            -179,0,0,0,0,-190,0,-230,0,-191,
            0,0,0,0,0,0,0,-381,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -285,0,0,0,0,0,0,0,0,-376,
            -197,-239,0,0,0,0,0,0,-235,0,
            0,0,0,0,0,-244,-286,0,0,0,
            0,0,0,0,0,-385,0,-248,-249,0,
            0,0,0,0,-263,0,0,0,0,0,
            0,-264,-317,0,0,0,0,0,0,0,
            0,-253,-120,0,0,0,0,0,0,0,
            -281,0,0,0,0,0,0,-325,0,0,
            0,0,0,0,0,0,-289,-290,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-291,-292,-336,0,-293,0,0,0,
            0,0,0,-388,-294,-295,0,0,0,0,
            0,0,-255,0,0,0,0,0,0,-296,
            -337,0,0,0,0,0,0,0,0,-297,
            0,0,-298,0,0,0,0,0,-299,0,
            0,0,0,0,0,-300,-350,0,0,0,
            0,0,0,0,0,-256,-243,0,0,0,
            0,0,0,0,-301,0,0,0,0,0,
            0,-363,0,0,0,0,0,0,0,0,
            -302,-303,0,-304,0,0,0,0,0,0,
            0,0,0,0,0,0,-305,-306,-371,0,
            -307,0,0,0,0,0,0,-277,-308,-313,
            0,0,0,0,0,0,-284,0,0,0,
            0,0,0,-378,0,0,0,0,0,0,
            0,0,-351,-360,0,0,0,0,0,0,
            0,-312,0,0,0,0,0,0,-364,-369,
            -384,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-64,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-251,0,0,0,0,0,0,0,-314,
            0,0,0,0,-92,-76,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-78,
            -315,0,-320,0,0,0,0,0,0,0,
            0,0,-330,-331,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-98,0,0,0,0,-245,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-333,0,0,0,-9,0,0,-356,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-103,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-238,0,0,
            0,0,0,0,0,-368,0,0,0,0,
            -13,-379,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-387,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-274,0,0,0,0,0,
            0,0,0,0,0,-322,0,0,0,0,
            0,0,0,0,0,0,0,0,-72,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-246,0,0,0,0,0,0,
            0,0,0,0,0,0,-83,0,0,0,
            -187,0,0,0,0,0,0,0,0,0,
            -370,0,0,-7,0,0,0,0,0,0,
            0,0,0,0,0,-267,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-310,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-150,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-219,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-88,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-91,0,0,0,
            0,0,0,0,0,0,0,0,0,-17,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-84,0,
            0,0,-346,-1,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-247,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-250,0,0,0,-288,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-278,0,
            0,0,0,0,-343,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-62,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-104,0,
            0,0,0,-316,0,0,-171,0,0,0,
            0,0,0,-318,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -141,0,0,0,0,0,0,0,0,0,
            0,0,0,-342,0,0,0,0,0,0,
            0,0,0,-329,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-344,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-345,0,0,0,0,0,0,
            0,-382,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-386,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-25,0,0,0,-389,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-220,0,0,
            0,0,0,0,0,0,0,-113,0,0,
            0,0,0,0,0,0,0,0,0,-221,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-222,0,0,0,
            0,0,0,0,0,-276,0,0,0,0,
            0,0,0,0,0,0,0,0,-19,0,
            0,0,-332,0,0,0,0,0,0,0,
            0,0,0,-22,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-24,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -32,0,0,0,0,0,0,0,0,0,
            0,0,0,-149,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-223,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-224,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -225,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-226,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-227,0,0,0,0,0,0,0,
            0,-26,0,0,0,0,0,0,-228,0,
            0,0,0,0,0,0,0,-242,0,0,
            -20,0,0,0,0,-105,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-106,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-107,0,0,0,0,0,0,
            0,0,0,0,-108,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-109,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-282,
            0,0,0,0,0,-125,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-41,0,0,0,
            -47,0,0,0,0,0,0,0,0,0,
            0,0,0,-114,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-73,0,
            0,0,0,0,0,0,0,0,0,-74,
            0,0,0,0,0,0,0,0,-75,0,
            0,0,0,0,0,0,0,-90,-170,0,
            0,0,0,-186,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-214,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-215,0,0,0,0,0,0,0,
            0,0,-268,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-216,0,0,0,
            0,0,0,0,0,-319,-321,0,0,0,
            -21,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-77,0,0,0,0,0,
            0,0,0,-174,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-192,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-37,0,0,
            0,0,-85,0,0,0,0,0,0,0,
            -353,0,0,0,0,0,-372,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -341,-366,0,0,0,0,0,0,0,0,
            -373,0,-380,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -383,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0
        };
    };
    public final static short baseCheck[] = BaseCheck.baseCheck;
    public final int baseCheck(int index) { return baseCheck[index]; }
    public final static short rhs[] = baseCheck;
    public final int rhs(int index) { return rhs[index]; };

    public interface BaseAction {
        public final static char baseAction[] = {
            127,2,128,54,54,18,18,59,59,25,
            25,1,1,3,3,3,3,4,4,4,
            5,6,6,6,6,6,6,6,6,98,
            98,108,7,7,7,7,7,7,7,7,
            7,7,7,8,8,13,13,13,13,14,
            14,14,15,15,15,16,16,16,16,16,
            17,17,17,19,19,20,20,21,21,22,
            22,23,23,24,24,28,28,28,28,28,
            28,28,28,28,28,28,28,43,33,26,
            129,129,109,109,64,44,44,44,44,44,
            44,44,45,45,45,30,30,110,110,89,
            89,46,46,47,47,47,82,82,48,48,
            48,48,48,49,49,49,49,49,61,61,
            29,29,29,29,29,50,50,50,73,73,
            91,91,91,91,92,92,92,93,93,93,
            94,94,94,95,95,95,90,90,83,83,
            84,51,53,53,53,53,53,67,68,68,
            68,68,68,68,68,68,68,68,68,68,
            77,74,74,130,131,78,78,75,75,75,
            99,111,111,112,112,100,100,100,60,132,
            132,113,101,101,101,76,76,133,114,114,
            115,115,102,102,31,32,32,32,52,56,
            56,37,37,37,37,34,34,35,38,38,
            39,36,36,103,103,40,135,135,134,134,
            58,58,58,58,58,58,58,58,58,116,
            65,65,65,65,41,96,96,86,86,86,
            87,87,79,79,136,136,66,66,88,88,
            88,69,69,69,70,71,71,71,72,72,
            72,72,85,85,55,55,57,138,137,137,
            137,137,117,139,140,140,141,141,142,142,
            127,127,143,143,118,118,118,118,144,144,
            119,119,119,80,120,120,9,9,9,27,
            27,10,10,145,145,121,121,121,122,122,
            146,146,123,123,11,11,147,147,124,124,
            124,124,12,62,148,148,149,149,125,125,
            125,104,104,104,7,7,7,7,16,16,
            24,4,45,150,97,97,97,81,81,29,
            61,50,84,84,84,113,113,113,133,130,
            131,41,99,141,141,151,152,117,89,68,
            68,68,66,66,63,42,106,107,107,107,
            107,107,107,107,107,107,126,126,154,154,
            153,153,105,105,61,1,1,1,35,35,
            35,359,1770,452,17,21,18,1054,1247,45,
            371,316,317,318,1264,1297,1278,1363,1327,334,
            1447,1439,1504,1478,1530,75,1506,790,2619,92,
            1323,2144,136,214,2517,20,790,17,21,18,
            1054,367,2306,20,232,17,21,18,1054,1247,
            45,138,135,137,161,1264,1297,1278,1363,1327,
            668,1447,1439,1504,1478,1530,75,483,140,167,
            282,1506,626,2661,1339,144,147,150,153,1062,
            2625,20,364,17,21,18,1054,43,40,232,
            503,689,2231,2470,2889,2904,2918,283,2951,1556,
            396,626,1310,180,2796,1696,511,846,503,3207,
            1766,371,316,317,318,610,320,316,317,318,
            337,255,214,335,685,2544,20,159,17,21,
            18,1054,356,136,214,750,767,225,233,255,
            214,725,225,230,219,718,222,224,323,1734,
            1452,180,138,135,137,161,1560,324,1734,371,
            316,317,318,2033,1076,320,316,317,318,140,
            167,1364,1523,2095,396,1339,144,147,150,153,
            1062,136,214,364,828,346,1321,816,188,1523,
            1731,1153,311,2231,2470,2889,2904,2918,1636,2951,
            138,135,137,161,1341,492,1194,511,3427,960,
            1182,38,951,2177,111,87,322,140,167,96,
            1697,313,1153,1339,144,147,150,153,1062,336,
            285,364,1463,1816,95,97,98,99,100,1584,
            180,2231,2470,2889,2904,2918,88,2951,371,316,
            317,318,769,1998,1936,511,816,31,957,2625,
            20,999,17,21,18,1054,43,45,439,314,
            136,214,1264,1297,1278,1363,1327,295,1447,1984,
            2436,20,834,17,21,18,1054,1247,45,138,
            135,137,161,1264,1297,1278,1363,1327,521,1447,
            1439,1504,1478,1530,75,406,140,167,282,28,
            1002,1556,1712,144,147,150,153,1062,2625,20,
            364,17,21,18,1054,43,39,1364,1356,1835,
            2231,2470,2889,2904,2918,283,2951,1556,927,20,
            834,17,21,18,1054,1247,45,1017,1997,1696,
            668,1264,1297,1278,1363,1327,229,1447,1439,1504,
            1478,1530,75,228,25,288,282,334,2725,20,
            1401,17,21,18,1054,1247,45,893,1019,1320,
            659,1264,1297,1278,1363,1327,181,1447,1439,1504,
            1478,1530,75,283,1704,1556,1240,289,1506,1182,
            2893,1102,128,816,31,2463,20,987,17,21,
            18,1054,1247,45,1181,2049,279,1621,1264,1297,
            1278,1363,1327,290,1447,1439,1504,1478,1530,75,
            210,2625,20,282,17,21,18,1054,43,45,
            684,48,814,1842,1264,1297,1278,1363,1327,684,
            1447,1439,1504,2001,1076,291,1191,261,105,1166,
            283,659,1556,2490,20,394,17,21,18,1054,
            1247,45,503,337,129,347,1264,1297,1278,1363,
            1327,343,1447,1439,1504,1478,1530,75,198,1217,
            387,282,925,617,20,510,17,21,18,1054,
            1247,45,771,255,214,1364,1264,1297,1278,1363,
            1327,24,1447,1439,1504,1478,1530,75,283,1446,
            1556,1041,2825,20,1039,17,21,18,1054,1247,
            45,217,1731,421,1269,1264,1297,1278,1363,1327,
            1483,1447,1439,1504,1478,1530,75,240,292,38,
            332,3268,226,2034,555,294,111,87,876,194,
            1377,96,816,187,205,825,384,702,1419,3323,
            1,1731,421,631,1463,109,95,97,98,99,
            100,1010,20,1131,17,21,18,1054,43,36,
            1394,1129,110,370,414,111,87,816,189,1377,
            96,725,225,230,219,718,222,224,1356,1835,
            1269,388,631,1463,109,95,97,98,99,100,
            107,788,1615,264,1153,275,816,1543,342,315,
            182,110,370,414,919,247,268,1162,1135,273,
            1969,990,590,1060,38,330,2627,38,90,748,
            388,319,316,317,318,265,1095,2625,20,108,
            17,21,18,1054,43,45,1119,1704,2113,576,
            1264,1297,1278,1363,1327,242,1447,1439,1504,1478,
            1530,94,288,1731,421,2625,20,349,17,21,
            18,1054,43,45,38,28,591,1556,1264,1297,
            1278,1363,1327,262,1447,1439,1982,111,87,1348,
            210,1377,96,2571,20,1080,17,21,18,1054,
            354,1829,1087,1842,631,1463,109,95,97,98,
            99,100,788,2625,20,912,17,21,18,1054,
            1247,45,587,110,370,414,1264,1297,1278,1363,
            1327,1699,1447,1439,1504,1478,1530,75,1269,1191,
            1988,92,388,2598,20,1670,17,21,18,1054,
            41,107,450,276,721,20,361,17,21,18,
            1054,1247,45,893,125,1153,22,1264,1297,1278,
            1363,1327,1224,1447,1439,1504,1478,1530,75,1989,
            277,446,1398,3207,145,1731,421,1828,126,88,
            320,316,317,318,691,28,1490,1556,2625,20,
            788,17,21,18,1054,43,45,507,241,111,
            87,1264,1877,1377,96,725,225,230,219,718,
            222,224,1766,1400,1684,570,631,1463,109,95,
            97,98,99,100,28,1364,1556,3413,47,1048,
            1997,805,893,106,2218,110,370,414,319,316,
            317,318,1282,312,244,2825,20,635,17,21,
            18,1054,1247,45,388,631,1716,128,1264,1297,
            1278,1363,1327,108,1447,1439,1504,1478,1530,75,
            446,586,3211,332,309,370,414,405,1269,319,
            316,317,318,1594,182,28,28,1556,1556,1381,
            180,1187,320,316,317,318,674,1221,371,316,
            317,318,256,214,725,225,922,219,718,222,
            909,2625,20,1387,17,21,18,1054,43,45,
            136,214,256,214,1264,1878,3408,893,1017,2082,
            2625,20,1269,17,21,18,1054,43,45,139,
            135,137,161,1264,1297,1278,1363,1327,788,1965,
            19,503,128,156,861,1191,141,167,788,38,
            869,1028,1010,145,148,151,154,1062,331,1257,
            365,2625,20,521,17,21,18,1054,1247,45,
            124,50,255,214,1264,1297,1278,1363,1327,830,
            1447,1439,1504,1478,1530,75,893,1239,2276,86,
            256,214,243,2625,20,969,17,21,18,1054,
            1247,45,245,1191,816,1835,1264,1297,1278,1363,
            1327,196,1447,1439,1504,1478,1530,75,1176,2625,
            20,85,17,21,18,1054,1247,45,112,555,
            1191,528,1264,1297,1278,1363,1327,1321,1447,1439,
            1504,1478,1530,75,419,2625,20,84,17,21,
            18,1054,1247,45,38,127,700,1791,1264,1297,
            1278,1363,1327,797,1447,1439,1504,1478,1530,75,
            554,2625,20,83,17,21,18,1054,1247,45,
            38,1852,3347,1191,1264,1297,1278,1363,1327,482,
            1447,1439,1504,1478,1530,75,1745,2625,20,82,
            17,21,18,1054,1247,45,211,339,123,284,
            1264,1297,1278,1363,1327,1269,1447,1439,1504,1478,
            1530,75,1289,2625,20,81,17,21,18,1054,
            1247,45,1125,231,892,1191,1264,1297,1278,1363,
            1327,1269,1447,1439,1504,1478,1530,75,1927,2625,
            20,80,17,21,18,1054,1247,45,788,1060,
            3441,1786,1264,1297,1278,1363,1327,1269,1447,1439,
            1504,1478,1530,75,1219,2625,20,79,17,21,
            18,1054,1247,45,1403,1180,816,297,1264,1297,
            1278,1363,1327,1269,1447,1439,1504,1478,1530,75,
            1598,2625,20,78,17,21,18,1054,1247,45,
            1364,1219,246,1191,1264,1297,1278,1363,1327,1269,
            1447,1439,1504,1478,1530,75,1663,2625,20,77,
            17,21,18,1054,1247,45,1269,2265,3442,1269,
            1264,1297,1278,1363,1327,2685,1447,1439,1504,1478,
            1530,75,1584,180,1280,76,1107,23,1364,1718,
            1357,371,316,317,318,320,316,317,318,206,
            195,1453,2625,20,1687,17,21,18,1054,1247,
            45,1269,1191,136,214,1264,1297,1278,1363,1327,
            1928,1447,1439,1504,1478,1530,75,816,299,352,
            93,1391,139,135,137,161,1505,3453,2625,20,
            2333,17,21,18,1054,43,45,1431,1191,141,
            167,1264,1297,1278,1363,1981,145,148,151,154,
            1062,2625,20,365,17,21,18,1054,1247,45,
            1330,1290,73,118,1264,1297,1278,1363,1327,1759,
            1447,1439,1504,1478,1530,75,1710,2625,20,1408,
            17,21,18,1054,1247,45,788,235,1819,456,
            1264,1297,1278,1363,1327,752,1447,1439,1504,1478,
            1530,75,1725,2625,20,1618,17,21,18,1054,
            43,45,1269,38,296,1153,1264,1297,1278,1363,
            1327,2398,1447,1439,1504,1478,1530,94,2625,20,
            321,17,21,18,1054,43,45,1458,1490,88,
            298,1264,1297,1278,1363,1327,1152,1447,1439,1504,
            1478,1530,94,1807,1865,2625,20,1395,17,21,
            18,1054,1247,45,788,1552,191,363,1264,1297,
            1278,1363,1327,1269,1447,1439,1504,1478,1530,75,
            845,2625,20,360,17,21,18,1054,1247,45,
            923,341,213,1140,1264,1297,1278,1363,1327,1329,
            1447,1439,1504,1478,1530,75,1368,2625,20,74,
            17,21,18,1054,43,45,1269,38,386,1153,
            1264,1297,1278,1363,1327,1347,1447,1439,1504,1478,
            1530,94,2625,20,340,17,21,18,1054,43,
            45,1556,1498,88,1104,1264,1297,1278,1363,1327,
            2042,1447,1439,1504,1478,1530,94,1943,1944,2625,
            20,1294,17,21,18,1054,43,45,1269,1570,
            1723,203,1264,1297,1278,1363,1327,1269,1447,1439,
            1504,1478,1530,94,2625,20,274,17,21,18,
            1054,43,45,1999,1874,353,1800,1264,1297,1278,
            1363,1327,1269,1447,1439,1504,1478,1530,94,2000,
            1824,2625,20,3781,17,21,18,1054,43,45,
            2674,3781,3781,204,1264,1297,1278,1363,1327,1597,
            1447,1439,1504,1478,1530,94,3781,3781,320,316,
            317,318,446,3781,3346,3781,3781,3781,1826,3781,
            1269,319,316,317,318,2679,2652,20,3781,17,
            21,18,1054,34,371,316,317,318,2707,1221,
            874,1269,421,1820,3781,1904,725,225,922,219,
            718,222,224,408,1269,3781,136,214,3781,2734,
            3781,326,319,316,317,318,88,3781,3408,198,
            1178,3781,280,1382,1692,138,135,137,161,38,
            2069,1153,2838,319,316,317,318,725,225,230,
            220,718,222,224,1155,156,861,3781,2964,3781,
            3224,3269,869,1269,3781,88,1328,446,3781,3207,
            1269,275,2090,3781,3781,521,319,316,317,318,
            3781,1281,270,1162,1135,273,1744,3781,281,3781,
            3781,406,396,3781,1221,319,316,317,318,3781,
            3781,725,225,230,219,718,222,224,446,3781,
            3207,408,3781,2069,3781,3781,1269,319,316,317,
            318,2238,1269,3408,3781,3781,3781,1489,3781,3781,
            371,316,317,318,1778,1221,1269,3781,395,2410,
            2773,3781,725,225,230,219,718,222,224,3781,
            156,861,136,214,2800,2371,20,860,17,21,
            18,1054,43,44,3408,1750,846,3781,3207,3781,
            3781,143,135,137,161,319,316,317,318,2625,
            20,3781,17,21,18,1054,43,38,142,167,
            3781,156,861,527,38,3781,1153,3781,869,3781,
            725,225,230,219,718,222,224,446,3781,3207,
            28,2867,1556,2579,3781,3781,319,316,317,318,
            88,906,2033,3207,508,3781,522,2111,3781,278,
            319,316,317,318,1221,3781,1142,3781,2684,3781,
            3781,725,225,230,219,718,222,224,527,306,
            3781,3781,3781,797,278,725,225,230,219,718,
            222,224,2244,3408,1153,3781,631,3421,3781,275,
            725,225,230,219,718,222,224,2033,3781,199,
            268,1162,1135,273,3781,305,370,414,88,3781,
            157,861,954,3781,275,116,3781,3781,1705,2008,
            2752,3781,3781,3781,310,268,1162,1135,273,371,
            316,317,318,2625,20,3781,17,21,18,1054,
            43,45,3421,3781,2008,3781,1893,709,3781,3781,
            3781,136,214,3781,200,3781,319,316,317,318,
            3781,3781,303,304,1673,3781,3781,709,3781,3781,
            138,135,137,161,2069,3781,319,316,317,318,
            2852,725,225,230,220,718,222,224,1155,371,
            316,317,318,2964,2069,3781,3781,3781,3781,3781,
            3781,725,225,1608,220,718,222,1582,1155,1600,
            3781,136,214,709,430,3781,522,3781,320,316,
            317,318,319,316,317,318,406,396,3781,3781,
            146,135,137,161,3781,1655,1731,1153,3781,306,
            2069,3781,3781,797,3781,3781,409,725,225,1608,
            220,718,222,224,1155,3781,631,3781,3781,3781,
            111,87,1716,1731,1153,96,1010,20,3781,17,
            21,18,1054,43,36,305,370,414,1463,104,
            95,97,98,99,100,3781,3781,111,87,1501,
            3781,659,96,3781,310,38,3781,1153,319,316,
            317,318,3781,3781,3781,1463,102,95,97,98,
            99,100,3781,3781,3781,709,2069,3781,987,3781,
            248,88,3781,3781,319,316,317,318,2226,444,
            1050,659,302,304,1777,1731,1153,1094,3781,659,
            3781,423,2069,3781,1838,1731,1153,3781,3781,767,
            225,234,3781,3781,2876,3781,1155,2334,987,111,
            87,3781,3781,3781,96,3781,198,3781,260,111,
            87,502,3781,659,96,2124,1761,1463,362,95,
            97,98,99,100,1899,1731,1153,1463,103,95,
            97,98,99,100,1555,3781,659,1446,3781,3781,
            987,3781,3781,319,316,317,318,3781,260,111,
            87,3781,3781,3781,96,1575,1761,1960,1731,1153,
            3781,2069,3781,987,3781,3781,3781,1463,120,95,
            97,98,99,100,3781,1050,3781,193,3781,3781,
            3781,3781,111,87,2021,1731,1153,96,747,879,
            260,3781,2082,1731,1153,3781,3781,1575,1761,2123,
            1463,115,95,97,98,99,100,3781,3781,111,
            87,3781,3781,260,96,3781,3781,111,87,3781,
            2124,1761,96,2143,1731,1153,3781,1463,2050,95,
            97,98,99,100,3781,1463,114,95,97,98,
            99,100,3781,3781,3781,1809,1324,3781,111,87,
            2204,1731,1153,96,3781,319,316,317,318,3781,
            3781,3781,3781,3781,3781,3781,1463,122,95,97,
            98,99,100,2069,3781,111,87,3781,2625,20,
            96,17,21,18,1054,43,45,1050,2696,3781,
            3274,1894,3781,1463,121,95,97,98,99,100,
            2625,20,3781,17,21,18,1054,43,45,3781,
            3781,2605,3781,1264,1297,1278,1897,2625,20,3781,
            17,21,18,1054,43,45,1251,3781,3781,3781,
            1264,1297,1278,1905,3781,319,316,317,318,2862,
            3781,3781,3781,444,3781,659,275,3781,371,316,
            317,318,3781,2069,2893,3781,3781,268,1162,1135,
            273,3781,3781,371,316,317,318,1155,2903,3781,
            136,214,987,3781,3781,3781,393,371,316,317,
            318,3781,3781,3781,275,136,214,3781,3781,149,
            135,137,161,3781,3781,270,1162,1135,273,136,
            214,2934,3781,3781,152,135,137,161,3781,3781,
            371,316,317,318,2944,3781,3781,3781,155,135,
            137,161,260,371,316,317,318,3781,3781,2180,
            1761,3781,136,214,2625,20,3781,17,21,18,
            1054,43,45,3781,3781,136,214,1264,1297,1906,
            3781,366,135,137,161,2625,20,3781,17,21,
            18,1054,43,45,139,135,137,161,1264,1297,
            1920,2625,20,3781,17,21,18,1054,43,45,
            3781,3781,3781,3781,1264,1297,1930,2625,20,3781,
            17,21,18,1054,43,45,3781,3781,3781,3781,
            1264,1297,1933,2625,20,3781,17,21,18,1054,
            43,45,476,3781,3207,3781,1264,1297,1939,2625,
            20,3781,17,21,18,1054,43,45,890,3781,
            421,557,1264,1297,1946,3781,874,3781,421,3781,
            319,316,317,318,3781,3781,725,225,230,219,
            718,222,224,874,88,421,3781,1282,1333,3781,
            3781,116,88,3781,3781,198,1178,3781,954,1382,
            631,3781,3781,3781,874,3781,421,3781,2838,88,
            3781,3781,198,1178,3781,874,1382,421,3781,2372,
            370,414,3781,3781,3781,2838,3224,3781,3781,874,
            88,421,1601,198,1178,3781,3781,1382,3781,3781,
            1595,88,3781,3224,198,1178,2838,3781,1382,1627,
            874,3781,421,3781,3781,88,1748,2838,198,1178,
            607,3781,1382,3781,3224,320,316,317,318,3781,
            1653,2838,3781,3781,3781,3224,88,3781,3781,198,
            1178,1679,3781,1382,3781,3781,3781,1324,3781,3224,
            3781,1324,2838,3781,3781,1696,319,316,317,318,
            319,316,317,318,2769,3781,3274,3781,3781,3781,
            3224,3781,3781,3781,2069,3781,2173,3781,2069,2625,
            20,3781,17,21,18,1054,43,37,1050,3781,
            2625,20,1050,17,21,18,1054,43,36,2625,
            20,3781,17,21,18,1054,43,35,1255,1804,
            570,3781,2437,3781,1324,3781,2457,3781,320,316,
            317,318,275,319,316,317,318,3781,3781,3781,
            3781,3781,3781,268,1162,1135,273,1282,3781,2625,
            20,2069,17,21,18,1054,43,48,3781,3781,
            631,3781,267,2625,20,1050,17,21,18,1054,
            43,47,3781,1324,3781,3781,3781,3781,3781,308,
            370,414,319,316,317,318,3781,2625,20,2876,
            17,21,18,1054,43,46,1324,1238,3781,659,
            2069,1038,3781,3781,3781,319,316,317,318,3781,
            319,316,317,318,1050,2652,20,3781,17,21,
            18,1054,33,2069,1744,3781,198,3781,1333,3781,
            3781,3781,3781,319,316,317,318,1050,2123,2798,
            20,3781,17,21,18,1054,1861,3781,3781,3781,
            3781,2069,3781,3781,3781,3781,3781,1446,1550,3781,
            3781,2503,1263,1682,3781,1592,3781,319,316,317,
            318,1814,319,316,317,318,3781,1870,3781,3781,
            319,316,317,318,3781,2499,319,316,317,318,
            3176,2244,2244,1153,1153,3781,3781,193,3451,3781,
            982,1873,3781,2244,3471,1153,3781,3781,1275,879,
            320,316,317,318,3781,3781,3781,88,88,3781,
            3781,1926,3781,3781,116,116,3781,3781,3781,88,
            320,316,317,318,3781,3781,116,3781,3781,3781,
            3781,3781,3781,3781,3781,3781,3781,3781,3781,3781,
            3781,3781,3781,3781,3781,3781,3781,3781,3781,3781,
            3781,3781,3781,3781,3781,3781,3781,3781,3781,3781,
            3781,3781,3781,1742,2232,3781,3781,3781,3781,3781,
            3781,3781,3781,3781,3781,2246,3781,0,1,540,
            0,1,520,0,1,535,0,1,544,0,
            678,413,0,520,130,0,535,130,0,544,
            130,0,520,131,0,535,131,0,544,131,
            0,520,132,0,535,132,0,544,132,0,
            544,186,0,535,186,0,520,186,0,186,
            190,0,544,185,0,535,185,0,520,185,
            0,185,190,0,520,133,0,535,133,0,
            544,133,0,520,134,0,535,134,0,544,
            134,0,417,420,0,416,419,0,415,418,
            0,11,227,0,520,369,0,535,369,0,
            544,369,0,4197,412,0,224,236,0,3789,
            1,0,544,381,0,535,381,0,520,381,
            0,1042,32,0,1853,32,0,520,411,0,
            535,411,0,544,411,0,4180,411,0,4178,
            411,0,544,254,0,535,254,0,520,254,
            0,4197,413,0,1,4019,0,224,237,0,
            520,407,0,535,407,0,544,407,0,3999,
            407,0,3998,407,0,3997,407,0,3996,407,
            0,3947,407,0,3946,407,0,3945,407,0,
            3944,407,0,3943,407,0,520,410,0,535,
            410,0,544,410,0,4180,410,0,4178,410,
            0,180,20,0,8,10,0,2010,119,0,
            1,4201,0,1,4200,0,1,4199,0,1,
            4008,0,367,356,0,368,357,0,113,2742,
            0
        };
    };
    public final static char baseAction[] = BaseAction.baseAction;
    public final int baseAction(int index) { return baseAction[index]; }
    public final static char lhs[] = baseAction;
    public final int lhs(int index) { return lhs[index]; };

    public interface TermCheck {
        public final static byte termCheck[] = {0,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,27,28,29,
            30,31,32,33,34,35,36,0,38,39,
            40,41,42,43,44,45,0,0,48,0,
            50,51,52,53,54,55,56,57,58,59,
            60,61,62,63,64,65,66,67,68,69,
            70,71,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,34,35,36,0,
            38,39,40,41,42,43,44,45,72,73,
            48,74,50,51,52,53,54,55,56,57,
            58,59,60,61,62,63,64,65,66,67,
            68,69,70,71,0,1,2,3,4,5,
            6,7,8,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,24,25,
            26,27,28,29,30,31,32,33,34,35,
            36,0,38,39,40,41,42,43,44,45,
            0,10,48,0,50,51,52,53,54,55,
            56,57,58,59,60,61,62,63,64,65,
            66,67,68,69,70,71,0,1,2,3,
            4,5,6,7,8,9,10,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,27,28,29,30,31,32,33,
            34,35,36,0,38,39,40,41,42,43,
            44,45,72,73,48,0,50,51,52,53,
            54,55,56,57,58,59,60,61,62,63,
            64,65,66,67,68,69,70,0,1,2,
            3,4,5,6,7,8,9,10,11,12,
            13,14,15,16,17,18,19,20,21,22,
            23,24,25,26,27,28,29,30,31,32,
            33,34,35,36,0,38,39,40,41,42,
            43,44,45,0,1,48,0,50,51,52,
            53,54,55,56,57,58,59,60,61,62,
            63,64,65,66,67,68,69,70,0,1,
            2,3,4,5,28,7,8,9,10,11,
            12,13,14,15,16,17,0,19,20,21,
            22,23,24,25,26,27,28,29,30,0,
            32,33,34,35,36,0,1,39,40,41,
            42,43,44,45,0,0,1,0,1,2,
            3,4,5,55,7,8,9,10,0,61,
            62,63,64,65,66,67,68,69,70,0,
            1,2,3,4,5,6,7,8,9,10,
            11,12,37,0,37,0,1,2,3,4,
            5,0,7,8,9,0,27,28,29,30,
            31,32,33,34,35,36,0,38,39,40,
            41,42,43,44,45,0,1,2,3,4,
            5,0,0,2,55,3,4,6,84,85,
            61,62,63,64,65,66,67,68,69,70,
            19,0,0,2,49,87,0,0,1,2,
            3,4,5,6,7,8,9,10,11,12,
            0,39,40,41,42,43,44,45,47,27,
            28,29,89,104,27,28,29,30,31,32,
            33,34,35,36,89,38,39,40,41,42,
            43,44,45,0,0,104,0,37,2,3,
            4,5,55,7,8,9,0,11,61,62,
            63,64,65,66,67,68,69,70,0,1,
            74,27,28,29,6,0,0,1,10,0,
            89,13,14,15,16,17,7,8,9,93,
            94,95,96,97,98,99,100,101,102,0,
            1,104,27,28,29,37,0,1,2,3,
            4,5,6,37,46,0,10,11,12,13,
            14,15,16,17,0,19,20,21,22,23,
            24,25,26,18,91,92,30,13,14,71,
            72,73,74,75,76,77,78,79,80,81,
            82,83,84,85,86,87,88,0,90,91,
            92,93,94,95,96,97,98,99,100,101,
            102,0,1,0,0,1,19,6,0,6,
            0,10,2,5,13,14,15,16,17,0,
            10,0,1,2,3,4,5,6,0,1,
            2,3,4,5,31,7,8,9,37,103,
            0,1,2,3,4,5,6,46,0,46,
            10,11,12,13,14,15,16,17,37,19,
            20,21,22,23,24,25,26,46,47,0,
            30,0,71,72,73,74,75,76,77,78,
            79,80,81,82,83,84,85,86,87,88,
            0,90,91,92,93,94,95,96,97,98,
            99,100,101,102,0,1,37,0,18,0,
            6,2,0,6,10,0,0,13,14,15,
            16,17,6,0,0,1,2,3,4,5,
            6,7,8,9,10,0,27,2,3,4,
            5,37,18,103,75,74,11,0,1,0,
            46,27,28,29,30,31,32,33,34,35,
            36,37,46,47,0,0,1,2,3,4,
            5,47,7,8,9,71,72,73,74,75,
            76,77,78,79,80,81,82,83,84,85,
            86,87,88,0,90,91,92,93,94,95,
            96,97,98,99,100,101,102,0,1,0,
            103,18,0,6,49,6,7,10,6,0,
            13,14,15,16,17,0,1,2,3,4,
            5,0,7,8,9,86,72,73,0,1,
            31,10,0,31,37,0,0,1,2,3,
            4,5,6,46,16,17,10,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,0,49,37,0,1,71,72,
            73,74,75,76,77,78,79,80,81,82,
            83,84,85,86,87,88,0,90,91,92,
            93,94,95,96,97,98,99,100,101,102,
            0,1,0,75,72,73,6,71,0,1,
            10,0,1,13,14,15,16,17,90,0,
            1,2,3,4,5,6,0,1,0,10,
            11,12,13,14,15,16,17,37,19,20,
            21,22,23,24,25,26,46,0,0,2,
            3,4,5,0,7,8,9,0,11,2,
            3,4,5,0,7,8,9,19,11,0,
            1,71,72,73,74,75,76,77,78,79,
            80,81,82,83,84,85,86,87,88,0,
            90,91,92,93,94,95,96,97,98,99,
            100,101,102,0,0,2,3,4,5,6,
            7,8,9,0,11,12,0,89,2,3,
            4,5,103,7,8,9,37,11,0,1,
            27,28,29,30,0,32,33,34,35,36,
            0,38,39,40,41,42,43,44,45,0,
            46,0,1,2,3,4,5,6,55,19,
            0,27,28,29,61,62,63,64,65,66,
            67,68,69,70,71,0,0,2,3,4,
            5,6,7,8,9,0,11,12,37,0,
            0,0,2,3,4,5,0,6,47,86,
            0,11,27,28,29,30,6,32,33,34,
            35,36,0,38,39,40,41,42,43,44,
            45,72,73,27,28,29,0,37,0,1,
            55,31,6,7,8,9,61,62,63,64,
            65,66,67,68,69,70,71,0,0,2,
            3,4,5,6,7,8,9,31,11,12,
            0,1,71,15,0,75,0,7,8,9,
            10,7,46,88,27,28,29,30,0,32,
            33,34,35,36,6,38,39,40,41,42,
            43,44,45,27,28,29,0,37,0,0,
            74,2,55,0,6,7,8,9,61,62,
            63,64,65,66,67,68,69,70,71,0,
            1,2,3,4,5,47,7,8,9,31,
            11,12,0,0,2,3,4,5,0,0,
            7,8,9,11,46,6,27,28,29,30,
            18,32,33,34,35,36,0,0,39,40,
            41,42,43,44,45,0,0,2,3,4,
            5,15,74,0,55,18,11,0,0,6,
            61,62,63,64,65,66,67,68,69,70,
            0,88,2,3,4,5,0,7,8,9,
            0,11,12,0,0,2,3,4,5,0,
            72,73,0,1,11,49,7,27,28,29,
            30,18,32,33,34,35,36,18,89,39,
            40,41,42,43,44,45,0,0,2,3,
            4,5,103,6,71,55,46,11,0,72,
            73,61,62,63,64,65,66,67,68,69,
            70,0,0,2,3,4,5,0,7,8,
            9,0,11,12,78,79,80,81,82,83,
            13,14,78,79,80,81,82,83,27,28,
            29,30,0,32,33,34,35,36,6,0,
            39,40,41,42,43,44,45,0,71,0,
            0,49,13,14,0,0,55,7,8,9,
            10,6,61,62,63,64,65,66,67,68,
            69,70,0,1,2,3,4,5,6,47,
            0,49,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,0,
            46,0,47,31,0,0,7,8,9,0,
            38,7,8,9,10,0,7,8,9,0,
            48,2,50,51,52,53,54,0,56,57,
            58,59,60,0,87,2,3,4,5,89,
            7,8,9,0,11,12,0,0,1,0,
            7,8,9,7,8,9,7,8,9,0,
            27,28,29,30,0,32,33,34,35,36,
            6,0,39,40,41,42,43,44,45,78,
            79,80,81,82,83,0,1,0,55,84,
            85,6,0,89,61,62,63,64,65,66,
            67,68,69,70,0,1,2,3,4,5,
            6,47,0,1,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,24,25,
            26,0,47,0,0,31,0,1,7,8,
            9,0,38,10,0,0,0,2,7,8,
            9,6,48,0,50,51,52,53,54,0,
            56,57,58,59,60,0,1,2,3,4,
            5,6,0,1,0,10,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,26,47,0,0,49,31,0,0,46,
            7,8,9,38,7,8,9,48,0,76,
            77,0,18,48,6,50,51,52,53,54,
            46,56,57,58,59,60,0,1,2,3,
            4,5,6,0,0,0,10,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,0,46,47,0,31,0,0,
            7,8,9,0,38,0,10,0,0,0,
            7,8,9,0,48,6,50,51,52,53,
            54,46,56,57,58,59,60,0,1,2,
            3,4,5,6,0,0,0,10,11,12,
            13,14,15,16,17,18,19,20,21,22,
            23,24,25,26,0,46,47,49,31,0,
            0,0,0,0,10,38,7,8,9,7,
            8,9,76,77,0,48,0,50,51,52,
            53,54,0,56,57,58,59,60,0,1,
            2,3,4,5,6,0,0,0,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,0,0,0,105,31,
            0,0,7,8,9,0,38,0,0,0,
            76,77,0,0,18,18,48,74,50,51,
            52,53,54,18,56,57,58,59,60,0,
            1,2,3,4,5,6,0,0,0,10,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,24,25,26,18,0,0,0,
            31,49,49,0,0,0,0,38,0,0,
            0,0,0,0,0,18,18,48,0,50,
            51,52,53,54,18,56,57,58,59,60,
            0,1,2,3,4,5,6,0,0,0,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,49,49,0,
            49,31,49,49,0,0,0,0,38,0,
            0,0,0,0,0,0,0,18,48,0,
            50,51,52,53,54,18,56,57,58,59,
            60,0,1,2,3,4,5,6,0,0,
            0,10,11,12,13,14,15,16,17,18,
            19,20,21,22,23,24,25,26,49,49,
            0,0,31,0,0,0,0,0,0,38,
            0,0,0,0,0,0,0,0,0,48,
            0,50,51,52,53,54,0,56,57,58,
            59,60,0,1,2,3,4,5,6,0,
            0,0,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,0,
            0,0,0,31,0,0,0,0,0,0,
            38,0,0,0,0,0,0,0,0,0,
            48,0,50,51,52,53,54,0,56,57,
            58,59,60,0,1,2,3,4,5,6,
            0,0,0,10,11,12,13,14,15,16,
            17,18,19,20,21,22,23,24,25,26,
            0,0,0,0,31,0,0,0,0,0,
            0,38,0,0,7,8,9,0,0,6,
            0,48,0,50,51,52,53,54,0,56,
            57,58,59,60,27,28,29,30,0,32,
            33,34,35,36,31,0,39,40,41,42,
            43,44,45,0,0,0,0,0,0,0,
            47,0,55,0,0,0,0,0,61,62,
            63,64,65,66,67,0,1,2,3,4,
            5,0,0,0,0,10,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,26,0,1,2,3,4,5,6,7,
            8,9,10,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,27,
            28,29,30,31,32,33,34,35,36,37,
            0,1,2,3,4,5,0,0,0,47,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,0,1,2,
            3,4,5,6,7,8,9,10,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,27,28,29,30,31,32,
            33,34,35,36,37,0,1,2,3,4,
            5,0,0,0,47,10,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,26,0,1,2,3,4,5,0,0,
            0,0,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,0,
            1,2,3,4,5,0,0,0,0,10,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,24,25,26,0,1,2,3,
            4,5,0,0,0,0,10,11,12,13,
            14,15,16,17,0,19,20,21,22,23,
            24,25,26,0,1,2,3,4,5,0,
            0,0,0,10,11,12,13,14,15,16,
            17,0,19,20,21,22,23,24,25,26,
            0,1,2,3,4,5,0,0,0,0,
            10,11,12,13,14,15,16,17,0,19,
            20,21,22,23,24,25,26,0,1,2,
            3,4,5,0,0,0,0,10,11,12,
            13,14,15,16,17,0,19,20,21,22,
            23,24,25,26,0,1,2,3,4,5,
            0,0,0,0,10,11,12,13,14,15,
            16,17,0,19,20,21,22,23,24,25,
            26,0,1,2,3,4,5,0,0,0,
            0,10,11,12,13,14,15,16,17,0,
            19,20,21,22,23,24,25,26,0,0,
            0,3,4,0,0,7,8,9,0,0,
            6,0,0,0,0,0,1,0,0,0,
            0,6,0,0,0,27,28,29,30,0,
            32,33,34,35,36,31,0,39,40,41,
            42,43,44,45,0,1,2,3,4,5,
            46,0,37,0,10,11,12,13,14,15,
            16,17,47,19,20,21,22,23,24,25,
            26,0,0,0,3,4,0,0,7,8,
            9,0,0,0,0,0,0,0,0,1,
            0,0,0,0,6,0,0,0,27,28,
            29,30,0,32,33,34,35,36,0,0,
            39,40,41,42,43,44,45,0,1,2,
            3,4,5,0,0,37,0,10,11,12,
            13,14,15,16,17,47,19,20,21,22,
            23,24,25,26,0,1,2,3,4,5,
            0,0,0,0,10,11,12,13,14,15,
            16,17,0,19,20,21,22,23,24,25,
            26,0,0,0,0,0,0,0,7,8,
            9,0,0,0,0,0,0,1,7,8,
            9,0,6,0,0,0,0,0,27,28,
            29,30,0,32,33,34,35,36,27,28,
            29,30,0,32,33,34,35,36,0,7,
            8,9,0,37,0,0,0,0,0,7,
            8,9,0,47,0,0,0,0,0,27,
            28,29,30,0,32,33,34,35,36,27,
            28,29,30,0,32,33,34,35,36,0,
            7,8,9,0,0,0,0,0,0,0,
            7,8,9,0,0,0,0,0,0,0,
            27,28,29,30,0,32,33,34,35,36,
            27,28,29,30,0,32,33,34,35,36,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0
        };
    };
    public final static byte termCheck[] = TermCheck.termCheck;
    public final int termCheck(int index) { return termCheck[index]; }

    public interface TermAction {
        public final static char termAction[] = {0,
            3781,1,6262,6206,6203,6205,1802,3538,1,1,
            1,6261,1,1,1,1,1,1,819,1,
            1,1,1,1,1,1,1,1,1,1,
            1,3790,1,1,1,1,1,1,3882,1,
            1,1,1,1,1,1,55,158,1644,287,
            1179,1077,1405,1720,609,1,1634,1046,1686,1203,
            1660,1,1,1,1,1,1,1,1,1,
            1,3788,8,3754,3754,3754,3754,3754,3754,3754,
            3754,3754,3754,3754,3754,3754,3754,3754,3754,3754,
            3754,3754,3754,3754,3754,3754,3754,3754,3754,3754,
            3754,3754,3754,3754,3754,3754,3754,3754,3754,3781,
            3754,3754,3754,3754,3754,3754,3754,3754,1238,1361,
            3754,462,3754,3754,3754,3754,3754,3754,3754,3754,
            3754,3754,3754,3754,3754,3754,3754,3754,3754,3754,
            3754,3754,3754,3754,3781,1,6262,6206,6203,6205,
            1802,3538,1,1,1,6261,1,1,1,1,
            1,1,819,1,1,1,1,1,1,1,
            1,1,1,1,1,3790,1,1,1,1,
            1,3781,3882,1,1,1,1,1,1,1,
            359,2196,1644,3781,1179,1077,1405,1720,609,1,
            1634,1046,1686,1203,1660,1,1,1,1,1,
            1,1,1,1,1,3788,3781,1,6262,6206,
            6203,6205,3791,3538,1,1,1,6261,1,1,
            1,1,1,1,819,1,1,1,1,1,
            1,1,1,1,1,1,1,3790,1,1,
            1,1,1,3781,3882,1,1,1,1,1,
            1,1,1238,1361,1644,3781,1179,1077,1405,1720,
            609,1,1634,1046,1686,1203,1660,1,1,1,
            1,1,1,1,1,1,1,3781,1,6262,
            6206,6203,6205,3791,3538,1,1,1,6261,1,
            1,1,1,1,1,819,1,1,1,1,
            1,1,1,1,1,1,1,1,3790,1,
            1,1,1,1,3781,3882,1,1,1,1,
            1,1,1,3781,480,1644,345,1179,1077,1405,
            1720,609,1,1634,1046,1686,1203,1660,1,1,
            1,1,1,1,1,1,1,1,3781,3135,
            3792,4196,4198,3691,4125,544,520,535,3250,3793,
            3389,3239,2289,3259,3365,2096,3781,3797,1183,3794,
            3795,3796,738,500,1133,3996,3998,3997,3945,3781,
            3946,3944,3999,3947,3943,3781,618,3950,3954,3952,
            3953,3951,3956,3957,63,223,491,269,2346,4008,
            4199,4201,4200,3955,544,520,535,254,69,3949,
            3958,3959,3960,4170,4171,4172,1279,3351,3081,3781,
            1,1,1,1,1,3791,3538,1,1,1,
            1,1,913,1,913,1,3062,4008,4199,4201,
            4200,3781,3547,3541,3544,3781,1,1,1,1,
            3790,1,1,1,1,1,3781,4088,1,1,
            1,1,1,1,1,1,3062,4008,4199,4201,
            4200,3781,3781,1956,1,4178,4180,3787,2867,2850,
            1,1,1,1,1,1,1,1,1,1,
            1913,1,3781,3694,2634,679,43,3781,1,1,
            1,1,1,3791,3538,1,1,1,1,1,
            221,4183,4179,4185,4186,4184,4181,4182,3786,3996,
            3998,3997,4040,301,1,1,1,1,3790,1,
            1,1,1,1,1843,4088,1,1,1,1,
            1,1,1,73,250,3537,186,913,3589,3589,
            3589,3589,1,3580,3586,3583,3781,3589,1,1,
            1,1,1,1,1,1,1,1,1,4198,
            1687,1,1,1,4198,249,271,818,4198,183,
            4040,4198,4198,4198,4198,4198,544,520,535,1661,
            1635,1609,1583,1557,1505,1531,1479,1453,1421,3781,
            525,300,3996,3998,3997,4198,1,3135,3792,4196,
            4198,4197,3785,913,4198,3781,1001,3793,545,3239,
            2289,3259,3365,2096,52,3797,1183,3794,3795,3796,
            738,500,1133,630,851,640,788,2828,2423,4198,
            4198,4198,4198,4198,4198,4198,4198,4198,4198,4198,
            4198,4198,4198,4198,4198,4198,4198,350,4198,4198,
            4198,4198,4198,4198,4198,4198,4198,4198,4198,4198,
            4198,1,4197,3781,3781,944,1063,4197,3781,3791,
            3781,4197,1741,487,4197,4197,4197,4197,4197,3781,
            1801,1,2346,4008,4199,4201,4200,263,254,3062,
            4008,4199,4201,4200,3790,544,520,535,4197,3784,
            3781,3135,3792,4196,4198,4197,3785,4197,3781,2317,
            2556,3793,545,3239,2289,3259,3365,2096,913,3797,
            1183,3794,3795,3796,738,500,1133,263,263,293,
            1817,212,4197,4197,4197,4197,4197,4197,4197,4197,
            4197,4197,4197,4197,4197,4197,4197,4197,4197,4197,
            230,4197,4197,4197,4197,4197,4197,4197,4197,4197,
            4197,4197,4197,4197,1,4196,2024,3781,233,327,
            4196,4109,3781,3785,4196,3781,3781,4196,4196,4196,
            4196,4196,3787,3781,357,368,368,368,368,368,
            3775,368,368,368,3775,3781,4110,3792,4196,4198,
            4197,4196,5629,3784,1757,1868,3793,417,3622,67,
            4196,368,368,368,368,3775,368,368,368,368,
            368,368,456,3786,358,1,3062,4008,4199,4201,
            4200,3775,3547,3541,3544,4196,4196,4196,4196,4196,
            4196,4196,4196,4196,4196,4196,4196,4196,4196,4196,
            4196,4196,4196,1,4196,4196,4196,4196,4196,4196,
            4196,4196,4196,4196,4196,4196,4196,1,3793,1,
            3784,819,1,3793,1947,117,3538,3793,3791,3781,
            3793,3793,3793,3793,3793,1,3062,4008,4199,4201,
            4200,3781,3547,3541,3544,1380,1238,1361,32,3661,
            117,3374,59,3790,3793,3781,1,3135,5192,4986,
            4780,4883,29,3793,3807,3808,3250,5089,545,3239,
            2289,3259,3365,2096,5629,3797,1183,3794,3795,3796,
            738,500,1133,3781,1947,3664,416,3625,3793,3793,
            3793,3793,3793,3793,3793,3793,3793,3793,3793,3793,
            3793,3793,3793,3793,3793,3793,3781,3793,3793,3793,
            3793,3793,3793,3793,3793,3793,3793,3793,3793,3793,
            1,3792,3781,823,1238,1361,3792,29,415,3628,
            3792,11,3631,3792,3792,3792,3792,3792,676,3781,
            3135,3792,4196,4198,4197,3785,3781,446,1,3250,
            3793,545,3239,2289,3259,3365,2096,3792,3797,1183,
            3794,3795,3796,738,500,1133,3792,185,3781,3601,
            3601,3601,3601,3781,3592,3598,3595,207,3601,6251,
            6251,6251,6251,3781,544,520,535,1030,6251,351,
            1234,3792,3792,3792,3792,3792,3792,3792,3792,3792,
            3792,3792,3792,3792,3792,3792,3792,3792,3792,272,
            3792,3792,3792,3792,3792,3792,3792,3792,3792,3792,
            3792,3792,3792,3781,348,1,1,1,1,192,
            1,1,1,68,1,1,378,4039,6259,6259,
            6259,6259,3784,544,520,535,913,6259,338,1549,
            1,1,1,1,251,1,1,1,1,1,
            3781,3978,1,1,1,1,1,1,1,58,
            1003,1,2346,3769,3766,3760,3763,3787,1,1063,
            3781,1,1,1,1,1,1,1,1,1,
            1,1,1,1,192,3781,3781,1,1,1,
            1,191,1,1,1,71,1,1,913,3781,
            3781,1,3792,4196,4198,4197,252,3649,3786,1380,
            3781,3793,1,1,1,1,3791,1,1,1,
            1,1,3781,3978,1,1,1,1,1,1,
            1,1238,1361,3996,3998,3997,236,1972,3781,3078,
            1,3790,224,3646,3646,3646,1,1,1,1,
            1,1,1,1,1,1,191,3781,65,1,
            1,1,1,192,1,1,1,224,1,1,
            269,2321,3788,1768,1,1646,253,544,520,535,
            254,3538,224,1105,1,1,1,1,3781,1,
            1,1,1,1,3787,3978,1,1,1,1,
            1,1,1,3996,3998,3997,3781,913,237,3781,
            224,2017,1,72,224,3697,3697,3697,1,1,
            1,1,1,1,1,1,1,1,192,1,
            3062,730,681,604,3550,3786,3547,3541,3544,224,
            3793,454,3781,254,3792,4196,4198,4197,57,3781,
            544,520,535,3793,224,3785,3996,3998,3997,3945,
            1064,3946,3944,3999,3947,3943,66,3781,3950,3954,
            3952,3953,3951,3956,3957,209,3781,3792,4196,4198,
            4197,1768,224,3781,3955,1409,3793,56,3781,3789,
            3949,3958,3959,3960,4170,4171,4172,1279,3351,3081,
            3781,1105,3792,4196,4198,3643,60,544,520,535,
            257,3793,454,3781,62,3792,4196,4198,4197,1,
            1238,1361,3781,1957,3793,2525,3538,3996,3998,3997,
            3945,1067,3946,3944,3999,3947,3943,819,2051,3950,
            3954,3952,3953,3951,3956,3957,208,286,1464,1464,
            1464,1464,3784,1114,3788,3955,798,1464,3781,1238,
            1361,3949,3958,3959,3960,4170,4171,4172,1279,3351,
            3081,3781,3781,3792,4196,4198,3691,54,544,520,
            535,3781,3793,454,3069,3053,3037,3021,3005,2984,
            2828,2423,3069,3053,3037,3021,3005,2984,3996,3998,
            3997,3945,3781,3946,3944,3999,3947,3943,3787,53,
            3950,3954,3952,3953,3951,3956,3957,70,1114,3781,
            1,2552,2828,2423,89,1,3955,3547,3541,3544,
            254,3787,3949,3958,3959,3960,4170,4171,4172,1279,
            3351,3081,3781,1,6262,6206,6203,6205,3791,3786,
            3781,770,1,6261,1,1,1,1,1,1,
            819,1,1,1,1,1,1,1,1,160,
            1732,61,3786,3790,1,64,544,520,535,379,
            3882,3547,3541,3544,254,3781,544,520,535,3781,
            1644,4020,1179,1077,1405,1720,609,3781,1634,1046,
            1686,1203,1660,3781,679,3792,4196,4198,4197,4040,
            544,520,535,382,3793,454,381,3781,2149,373,
            544,520,535,3652,3658,3655,544,520,535,3781,
            3996,3998,3997,3945,1,3946,3944,3999,3947,3943,
            91,3781,3950,3954,3952,3953,3951,3956,3957,3069,
            3053,3037,3021,3005,2984,3781,447,3781,3955,2867,
            2850,3787,3781,4040,3949,3958,3959,3960,4170,4171,
            4172,1279,3351,3081,3781,1,6262,6206,6203,6205,
            3791,91,3781,2304,1,6261,1,1,1,1,
            1,1,819,1,1,1,1,1,1,1,
            1,372,3786,49,3781,3790,325,942,544,520,
            535,184,3882,3337,3781,3781,1,1086,544,520,
            535,3787,1644,30,1179,1077,1405,1720,609,119,
            1634,1046,1686,1203,1660,3781,1,6262,6206,6203,
            6205,3791,3781,2585,208,1,6261,1,1,1,
            1,1,1,819,1,1,1,1,1,1,
            1,1,3786,254,3781,2,3790,374,3781,3810,
            3682,3688,3685,3882,544,520,535,3757,3781,3313,
            3299,3781,1514,1644,3787,1179,1077,1405,1720,609,
            5628,1634,1046,1686,1203,1660,3781,1,6262,6206,
            6203,6205,3791,3781,3781,30,1,6261,1,1,
            1,1,1,1,819,1,1,1,1,1,
            1,1,1,380,2009,3786,51,3790,3781,3781,
            544,520,535,201,3882,3781,3337,3781,3781,3781,
            544,520,535,113,1644,3787,1179,1077,1405,1720,
            609,758,1634,1046,1686,1203,1660,3781,1,6262,
            6206,6203,6205,3791,3781,3781,3781,1,6261,1,
            1,1,1,1,1,819,1,1,1,1,
            1,1,1,1,50,1295,3786,2624,3790,375,
            3781,3781,376,3781,3337,3882,544,520,535,544,
            520,535,3313,3299,3781,1644,3781,1179,1077,1405,
            1720,609,3781,1634,1046,1686,1203,1660,3781,1,
            6262,6206,6203,6205,3791,3781,3781,3781,1,6261,
            1,1,1,1,1,1,819,1,1,1,
            1,1,1,1,1,377,230,3781,3778,3790,
            3781,3781,544,520,535,368,3882,3781,3781,3781,
            3313,3299,3781,3781,234,1540,1644,883,1179,1077,
            1405,1720,609,5629,1634,1046,1686,1203,1660,3781,
            1,6262,6206,6203,6205,3791,3781,3781,357,1,
            6261,1,1,1,1,1,1,819,1,1,
            1,1,1,1,1,1,5629,355,42,3781,
            3790,1895,1921,3781,3781,3781,3781,3882,202,3781,
            3781,1,3781,1,1,5629,5629,1644,3781,1179,
            1077,1405,1720,609,5629,1634,1046,1686,1203,1660,
            3781,1,6262,6206,6203,6205,3791,3781,3781,3781,
            1,6261,1,1,1,1,1,1,819,1,
            1,1,1,1,1,1,1,1999,4166,190,
            4198,3790,4197,4196,3781,3781,3781,382,3882,1,
            1,3781,3781,3781,3781,3781,3781,207,1644,3781,
            1179,1077,1405,1720,609,378,1634,1046,1686,1203,
            1660,3781,1,6262,6206,6203,6205,3791,3781,3781,
            3781,1,6261,1,1,1,1,1,1,819,
            1,1,1,1,1,1,1,1,3793,3792,
            3781,3781,3790,3781,3781,3781,3781,3781,3781,3882,
            3781,3781,3781,3781,3781,3781,3781,3781,3781,1644,
            3781,1179,1077,1405,1720,609,3781,1634,1046,1686,
            1203,1660,3781,1,6262,6206,6203,6205,3791,3781,
            3781,3781,1,6261,1,1,1,1,1,1,
            819,1,1,1,1,1,1,1,1,3781,
            3781,3781,3781,3790,3781,3781,3781,3781,3781,3781,
            3882,3781,3781,3781,3781,3781,3781,3781,3781,3781,
            1644,3781,1179,1077,1405,1720,609,3781,1634,1046,
            1686,1203,1660,3781,1,6262,6206,6203,6205,3791,
            3781,3781,3781,1,6261,1,1,1,1,1,
            1,819,1,1,1,1,1,1,1,1,
            3781,3781,3781,3781,3790,3781,3781,130,3781,3781,
            3781,3882,3781,1,3559,3553,3556,3781,3781,117,
            3781,1644,3781,1179,1077,1405,1720,609,3781,1634,
            1046,1686,1203,1660,3996,3998,3997,3945,3781,3946,
            3944,3999,3947,3943,117,3781,3950,3954,3952,3953,
            3951,3956,3957,3781,3781,3781,3781,3781,3781,3781,
            117,3781,3955,3781,3781,3781,3781,3781,3949,3958,
            3959,3960,4170,4171,4172,3781,3135,3792,4196,4198,
            4197,3781,3781,3781,3781,3250,3793,545,3239,2289,
            3259,3365,2096,5629,3797,1183,3794,3795,3796,738,
            500,1133,20,3751,180,180,180,180,3751,180,
            180,180,3751,3781,3781,3781,3781,3781,3781,3781,
            3781,3781,3781,3781,3781,3781,3781,3781,3781,180,
            180,180,180,3751,180,180,180,180,180,3751,
            3781,3135,3792,4196,4198,4197,3781,3781,3781,3751,
            3250,3793,545,3239,2289,3259,3365,2096,5629,3797,
            1183,3794,3795,3796,738,500,1133,356,367,367,
            367,367,367,3772,367,367,367,3772,3781,3781,
            3781,3781,3781,3781,3781,3781,3781,3781,3781,3781,
            3781,3781,3781,3781,367,367,367,367,3772,367,
            367,367,367,367,367,1,3135,5192,4986,4780,
            4883,3781,3781,3781,3772,3250,5089,545,3239,2289,
            3259,3365,2096,5629,3797,1183,3794,3795,3796,738,
            500,1133,383,3135,3792,4196,4198,4197,3781,3781,
            3781,3781,3250,3793,545,3239,2289,3259,3365,2096,
            5629,3797,1183,3794,3795,3796,738,500,1133,3781,
            3135,3792,4196,4198,4197,3781,3781,3781,3781,3250,
            3793,545,3239,2289,3259,3365,2096,5629,3797,1183,
            3794,3795,3796,738,500,1133,3781,2110,3792,4196,
            4198,4197,3781,3781,3781,3781,3250,3793,545,3239,
            2289,3259,3365,2096,3781,3797,1183,3794,3795,3796,
            738,500,1133,3781,3086,3792,4196,4198,4197,3781,
            3781,3781,3781,3250,3793,545,3239,2289,3259,3365,
            2096,3781,3797,1183,3794,3795,3796,738,500,1133,
            3781,3103,3792,4196,4198,4197,3781,3781,3781,3781,
            3250,3793,545,3239,2289,3259,3365,2096,3781,3797,
            1183,3794,3795,3796,738,500,1133,3781,3124,3792,
            4196,4198,4197,3781,3781,3781,3781,3250,3793,545,
            3239,2289,3259,3365,2096,3781,3797,1183,3794,3795,
            3796,738,500,1133,3781,3135,3792,4196,4198,4197,
            3781,3781,3781,3781,3250,3793,545,3239,2289,3259,
            3365,2096,3781,3797,1183,3794,3795,3796,738,500,
            1133,3781,3149,3792,4196,4198,4197,3781,3781,3781,
            3781,3250,3793,545,3239,2289,3259,3365,2096,3781,
            3797,1183,3794,3795,3796,738,500,1133,411,3781,
            3781,3679,3676,3781,3781,3673,3667,3670,3781,3781,
            3791,3781,3781,3781,3781,1,2321,3781,3781,3781,
            3781,392,3781,3781,3781,3996,3998,3997,3945,3781,
            3946,3944,3999,3947,3943,3790,3781,4183,4179,4185,
            4186,4184,4181,4182,1,3135,3792,4196,4198,4197,
            2331,3781,913,3781,3250,3793,545,3239,2289,3259,
            3365,2096,392,3797,1183,3794,3795,3796,738,500,
            1133,410,3781,3781,3748,3745,3781,3781,3742,3736,
            3739,3781,3781,3781,3781,3781,3781,3781,1,2321,
            3781,3781,3781,3781,266,3781,3781,3781,3996,3998,
            3997,3945,3781,3946,3944,3999,3947,3943,3781,3781,
            4183,4179,4185,4186,4184,4181,4182,3781,3170,3792,
            4196,4198,4197,3781,3781,913,3781,3250,3793,545,
            3239,2289,3259,3365,2096,266,3797,1183,3794,3795,
            3796,738,500,1133,333,3135,3792,4196,4198,4197,
            3781,3781,3781,3781,3250,3793,545,3239,2289,3259,
            3365,2096,3781,3797,1183,3794,3795,3796,738,500,
            1133,131,3781,3781,3781,3781,3781,3781,3568,3562,
            3565,132,3781,3781,3781,3781,1,2321,3577,3571,
            3574,3781,3787,3781,3781,3781,3781,3781,3996,3998,
            3997,3945,3781,3946,3944,3999,3947,3943,3996,3998,
            3997,3945,133,3946,3944,3999,3947,3943,3781,3610,
            3604,3607,134,913,3781,3781,3781,3781,3781,3619,
            3613,3616,3781,3786,3781,3781,3781,3781,3781,3996,
            3998,3997,3945,3781,3946,3944,3999,3947,3943,3996,
            3998,3997,3945,369,3946,3944,3999,3947,3943,3781,
            3640,3634,3637,407,3781,3781,3781,3781,3781,3781,
            3706,3700,3703,3781,3781,3781,3781,3781,3781,3781,
            3996,3998,3997,3945,3781,3946,3944,3999,3947,3943,
            3718,3712,3715,3727,3781,3724,3730,3709,3721,3733
        };
    };
    public final static char termAction[] = TermAction.termAction;
    public final int termAction(int index) { return termAction[index]; }

    public interface Asb {
        public final static char asb[] = {0,
            751,1,165,350,348,568,751,166,350,350,
            831,141,668,166,166,166,79,658,79,658,
            658,79,658,79,355,350,339,339,339,339,
            166,79,33,570,9,521,227,350,105,104,
            355,230,141,570,521,194,355,263,597,539,
            416,704,53,136,658,662,659,662,136,662,
            658,350,358,403,417,711,33,33,33,33,
            33,33,33,33,33,33,33,615,297,528,
            420,527,350,227,227,235,711,350,120,570,
            350,679,540,3,704,703,417,267,426,141,
            466,358,403,713,615,615,615,615,615,417,
            417,417,411,411,555,539,662,662,273,33,
            9,522,791,53,227,143,260,747,481,239,
            492,497,495,505,499,508,507,510,509,511,
            713,463,141,630,570,348,194,263,679,679,
            539,31,522,522,662,166,166,18,166,166,
            522,102,33,102,348,112,476,292,141,267,
            426,466,466,403,403,417,406,570,112,417,
            417,417,417,417,78,355,708,111,475,525,
            301,33,540,417,33,260,666,417,747,260,
            238,235,33,33,33,33,33,33,33,33,
            33,33,33,33,33,33,33,33,33,33,
            33,33,33,33,33,33,33,33,33,33,
            33,33,55,33,112,463,118,350,536,522,
            522,553,33,538,33,33,18,102,607,18,
            350,3,417,272,417,417,426,463,91,426,
            466,471,610,471,403,747,708,355,570,713,
            360,360,360,120,141,411,417,794,711,33,
            305,615,539,417,33,33,260,239,495,495,
            492,492,499,499,497,497,497,497,497,497,
            507,505,509,508,102,102,510,666,118,31,
            522,417,166,417,417,18,33,18,355,112,
            426,93,471,463,33,662,747,403,794,406,
            417,713,417,260,260,33,33,471,186,522,
            31,18,33,18,18,350,272,463,521,33,
            517,93,518,463,403,417,364,463,116,233,
            168,662,33,102,14,273,522,417,538,93,
            33,518,518,297,120,532,662,33,417,273,
            522,18,518,33,260,18,417,260,18
        };
    };
    public final static char asb[] = Asb.asb;
    public final int asb(int index) { return asb[index]; }

    public interface Asr {
        public final static byte asr[] = {0,
            104,0,6,46,47,2,27,0,6,49,
            47,19,0,74,37,75,0,51,53,18,
            58,60,54,48,56,57,52,50,59,38,
            31,6,1,21,22,23,2,11,3,5,
            4,16,17,15,10,13,14,24,25,20,
            26,12,19,0,20,21,22,23,19,2,
            11,1,16,17,15,10,13,14,24,25,
            12,26,5,3,4,49,0,18,37,46,
            47,36,33,30,32,35,27,29,28,34,
            31,6,10,2,3,5,4,1,7,9,
            8,49,0,1,49,74,31,8,9,7,
            37,47,6,46,0,6,71,37,75,1,
            21,22,23,19,16,17,15,10,13,14,
            24,25,20,26,12,2,11,3,5,4,
            18,0,27,29,16,17,15,10,13,14,
            24,25,20,26,12,2,11,3,5,4,
            21,22,23,19,28,1,0,74,1,21,
            22,23,19,16,17,15,10,13,14,24,
            25,20,26,12,18,2,11,3,5,4,
            37,75,0,55,68,33,40,34,41,42,
            35,29,43,44,30,69,36,70,45,61,
            28,62,63,64,2,11,12,27,39,32,
            5,3,4,65,66,67,8,9,7,6,
            46,31,74,0,27,29,28,30,16,17,
            15,10,13,14,24,25,20,26,12,1,
            2,11,3,5,4,21,22,23,19,103,
            6,0,6,74,46,31,18,8,9,7,
            0,46,20,21,22,23,11,1,16,17,
            15,10,13,14,24,25,12,26,5,3,
            4,47,6,2,19,0,49,89,103,71,
            75,90,16,17,37,15,13,14,76,77,
            72,73,78,79,80,81,84,85,86,87,
            88,91,92,74,93,94,95,96,97,98,
            99,100,101,102,46,82,83,47,32,27,
            33,34,35,29,30,36,28,31,6,2,
            1,5,3,4,8,9,7,10,0,49,
            89,103,71,35,30,36,34,33,32,15,
            13,14,76,77,72,73,78,79,80,81,
            84,85,86,87,88,91,92,74,93,94,
            95,96,97,98,99,100,101,102,82,83,
            18,31,27,29,28,46,2,3,5,4,
            10,8,9,7,37,1,47,6,0,6,
            49,46,47,1,0,32,39,27,55,68,
            33,40,34,41,42,35,29,43,44,30,
            69,36,70,45,61,28,62,63,64,2,
            11,12,8,9,7,5,3,4,65,66,
            67,38,6,71,0,2,11,5,3,4,
            6,71,46,0,37,6,46,47,1,0,
            74,93,94,95,96,97,99,98,100,101,
            102,10,76,77,13,14,73,72,78,79,
            80,81,82,83,84,85,15,86,87,88,
            89,103,47,71,91,92,49,8,9,7,
            46,31,6,0,103,31,46,47,6,49,
            0,103,6,89,0,47,104,105,71,51,
            53,18,58,60,54,48,56,57,52,50,
            59,38,6,31,21,22,23,19,16,17,
            15,13,14,24,25,20,26,10,1,12,
            2,11,68,69,70,61,55,62,63,64,
            65,66,67,36,33,30,32,35,27,29,
            28,34,7,9,8,5,3,40,4,44,
            45,39,43,41,42,0,49,89,0,6,
            46,71,74,0,20,21,22,23,19,1,
            16,17,15,10,13,14,24,25,26,32,
            39,27,55,68,33,40,34,41,42,35,
            29,43,44,30,69,36,70,45,61,28,
            62,63,64,12,65,66,67,18,8,9,
            7,11,3,5,4,2,0,49,46,31,
            61,55,62,63,64,65,66,67,37,10,
            5,40,44,45,39,43,41,42,36,33,
            30,32,35,27,29,28,34,3,4,7,
            9,8,1,47,6,2,0,10,1,37,
            47,6,32,39,55,68,33,40,34,41,
            42,35,43,44,30,69,36,70,45,61,
            62,63,64,2,11,12,8,9,7,5,
            3,4,65,66,67,89,27,29,28,0,
            104,32,39,27,55,68,33,40,34,41,
            42,35,29,43,44,30,69,36,70,45,
            61,28,62,63,64,11,1,12,8,9,
            5,3,4,65,66,67,31,6,38,7,
            2,10,0,10,32,39,27,55,68,33,
            40,34,41,42,35,29,43,44,30,69,
            36,70,45,61,28,62,63,64,2,11,
            12,3,4,65,66,67,89,7,9,8,
            5,0
        };
    };
    public final static byte asr[] = Asr.asr;
    public final int asr(int index) { return asr[index]; }

    public interface Nasb {
        public final static char nasb[] = {0,
            181,34,38,94,103,23,163,34,149,117,
            34,19,132,34,34,34,133,122,133,122,
            122,133,122,133,188,107,34,34,34,34,
            34,133,63,126,15,104,122,106,58,58,
            188,34,19,94,104,34,188,34,17,49,
            161,35,34,8,42,8,42,8,8,8,
            42,177,34,42,161,160,63,63,63,63,
            63,63,63,63,63,63,63,137,34,161,
            34,34,149,42,122,77,160,120,12,205,
            175,33,81,10,65,34,161,122,94,34,
            94,34,122,93,137,137,137,137,137,161,
            161,161,171,171,1,49,56,56,96,140,
            15,104,34,15,42,62,79,21,34,78,
            34,34,34,34,34,34,34,34,34,34,
            195,94,34,111,26,103,34,34,133,33,
            88,102,104,104,8,34,34,44,34,34,
            104,34,99,34,103,161,34,161,34,42,
            191,94,8,122,94,161,169,26,34,161,
            161,161,161,161,155,188,158,58,58,34,
            34,63,81,161,63,79,34,161,21,79,
            78,124,63,63,63,63,63,63,63,63,
            63,63,63,63,63,63,63,63,63,63,
            63,63,63,63,63,63,63,63,63,63,
            63,63,52,63,161,50,94,149,34,104,
            104,199,140,34,140,140,44,34,34,44,
            118,10,161,63,161,161,94,50,103,73,
            8,68,34,34,94,21,168,188,126,93,
            155,155,155,154,155,145,161,186,160,63,
            34,137,88,161,63,63,79,78,34,34,
            34,34,34,34,34,34,34,34,34,34,
            34,34,34,34,34,34,34,34,61,202,
            104,161,34,161,161,44,63,44,188,161,
            191,149,68,50,63,8,21,124,186,143,
            161,93,161,79,79,63,63,68,70,104,
            202,44,140,44,44,119,63,50,104,63,
            34,106,122,50,124,161,155,50,60,34,
            12,8,63,34,40,202,104,161,34,149,
            63,122,42,135,12,79,8,63,161,202,
            104,44,42,63,79,44,161,79,44
        };
    };
    public final static char nasb[] = Nasb.nasb;
    public final int nasb(int index) { return nasb[index]; }

    public interface Nasr {
        public final static char nasr[] = {0,
            73,97,94,93,78,92,91,1,0,122,
            0,6,57,0,104,0,106,0,120,0,
            96,0,34,2,103,97,95,94,93,78,
            92,91,73,0,147,18,0,148,0,142,
            0,9,0,1,43,2,44,0,2,59,
            0,2,33,128,0,108,0,58,0,117,
            57,2,6,0,18,124,0,98,0,1,
            151,0,2,60,100,0,2,6,54,0,
            29,2,42,1,43,110,0,43,1,42,
            89,59,29,2,0,2,129,0,6,150,
            0,33,2,25,0,9,38,34,2,0,
            2,42,29,61,30,0,40,2,36,34,
            38,27,0,31,0,78,74,75,76,77,
            81,67,50,0,138,0,60,42,30,2,
            33,0,34,38,71,70,27,0,2,34,
            38,27,0,6,57,55,0,70,71,2,
            18,0,2,29,42,118,0,18,34,38,
            70,71,2,0,38,40,27,34,36,0,
            143,2,29,42,0,2,29,27,65,0,
            112,2,60,0,134,2,29,0,42,29,
            61,2,82,0,29,2,42,144,0
        };
    };
    public final static char nasr[] = Nasr.nasr;
    public final int nasr(int index) { return nasr[index]; }

    public interface TerminalIndex {
        public final static char terminalIndex[] = {0,
            2,87,101,102,100,89,99,97,98,9,
            88,95,10,11,8,6,7,3,86,70,
            83,84,85,12,13,96,50,78,66,71,
            94,46,57,62,65,74,1,107,49,58,
            63,64,68,69,76,42,92,79,29,47,
            48,51,52,53,54,59,60,61,67,73,
            77,80,81,82,103,104,105,56,72,75,
            93,16,17,31,4,14,15,18,19,20,
            21,43,44,22,23,24,25,26,30,5,
            27,28,32,33,34,35,36,37,38,39,
            40,41,91,108,55,90,106
        };
    };
    public final static char terminalIndex[] = TerminalIndex.terminalIndex;
    public final int terminalIndex(int index) { return terminalIndex[index]; }

    public interface NonterminalIndex {
        public final static char nonterminalIndex[] = {0,
            113,0,0,0,0,115,119,120,197,0,
            0,0,121,122,123,124,125,110,126,127,
            128,129,130,0,112,0,198,131,140,136,
            148,0,114,171,0,174,168,170,0,172,
            0,207,132,135,0,0,0,0,0,147,
            0,0,0,109,118,158,0,173,111,162,
            139,0,0,134,169,117,150,0,185,186,
            187,0,149,151,152,153,154,159,182,0,
            205,0,155,156,157,175,181,184,138,141,
            142,143,144,145,146,180,204,0,0,161,
            165,167,176,202,0,208,0,116,133,137,
            0,160,164,0,166,179,189,194,0,196,
            0,199,0,201,0,209,0,0,0,0,
            0,163,0,177,178,183,188,0,190,191,
            0,192,193,195,0,0,200,0,0,203,
            206,0,0,210,0
        };
    };
    public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
    public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }

    public interface ScopePrefix {
        public final static char scopePrefix[] = {
            221,275,348,239,328,144,170,176,303,118,
            377,399,356,20,127,160,186,206,86,283,
            338,8,54,54,78,82,94,100,132,182,
            254,319,94,435,442,446,373,395,408,422,
            408,362,34,46,75,27,27,136,139,191,
            139,216,139,264,269,272,325,450,14,69,
            106,112,152,258,106,419,429,429,1,27,
            152,293,229,386,229,293,39,39,60,252,
            60,60,60,60,60,323,417,39,39,64,
            165,194,165,194,194
        };
    };
    public final static char scopePrefix[] = ScopePrefix.scopePrefix;
    public final int scopePrefix(int index) { return scopePrefix[index]; }

    public interface ScopeSuffix {
        public final static char scopeSuffix[] = {
            98,98,335,98,335,150,25,25,98,124,
            383,405,343,25,58,150,25,58,91,288,
            343,12,58,58,58,58,98,104,58,25,
            12,12,98,58,58,25,335,335,335,426,
            412,366,37,37,58,25,25,58,142,25,
            201,58,219,267,267,267,12,58,17,72,
            109,115,167,261,17,72,432,439,4,30,
            155,288,246,389,232,296,44,52,62,12,
            309,311,313,315,317,12,12,41,49,66,
            167,203,155,196,211
        };
    };
    public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
    public final int scopeSuffix(int index) { return scopeSuffix[index]; }

    public interface ScopeLhs {
        public final static char scopeLhs[] = {
            76,74,48,76,48,65,58,58,74,55,
            48,47,48,152,72,65,58,36,10,74,
            48,63,81,7,7,121,120,80,72,58,
            100,61,30,7,6,6,48,47,47,24,
            47,48,113,84,4,142,141,70,88,58,
            103,34,56,75,75,75,49,4,63,45,
            80,117,65,100,61,45,8,6,42,152,
            65,74,76,48,76,74,113,84,97,100,
            95,94,93,92,91,61,46,113,84,150,
            65,36,65,40,36
        };
    };
    public final static char scopeLhs[] = ScopeLhs.scopeLhs;
    public final int scopeLhs(int index) { return scopeLhs[index]; }

    public interface ScopeLa {
        public final static byte scopeLa[] = {
            71,71,47,71,47,27,103,103,71,71,
            47,105,31,103,47,27,103,47,47,18,
            31,31,47,47,47,47,71,18,47,103,
            31,31,71,47,47,103,47,47,47,49,
            47,31,8,8,47,103,103,47,1,103,
            2,47,2,2,2,2,31,47,2,49,
            2,74,10,2,2,49,47,47,5,89,
            10,18,18,48,2,2,2,2,12,31,
            2,68,69,69,61,31,31,2,2,89,
            10,1,10,1,1
        };
    };
    public final static byte scopeLa[] = ScopeLa.scopeLa;
    public final int scopeLa(int index) { return scopeLa[index]; }

    public interface ScopeStateSet {
        public final static char scopeStateSet[] = {
            142,142,38,142,38,218,54,54,142,17,
            38,38,38,3,58,218,54,149,168,142,
            38,238,142,66,66,14,139,241,58,54,
            8,238,30,66,66,66,38,38,38,102,
            38,38,5,162,66,1,3,58,60,54,
            227,149,155,142,142,142,38,66,238,38,
            241,136,218,8,238,38,73,66,231,3,
            218,142,142,38,142,142,5,162,144,8,
            144,144,144,144,144,238,38,5,162,12,
            218,149,218,151,149
        };
    };
    public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
    public final int scopeStateSet(int index) { return scopeStateSet[index]; }

    public interface ScopeRhs {
        public final static char scopeRhs[] = {0,
            212,109,0,100,208,0,0,197,109,149,
            0,112,0,109,149,0,141,112,0,171,
            89,171,37,0,109,0,171,37,0,30,
            134,109,0,208,134,0,198,0,134,0,
            165,198,0,165,0,163,134,0,158,198,
            0,158,0,173,1,12,0,110,0,180,
            0,205,0,171,0,30,134,0,257,51,
            0,29,135,0,137,1,0,173,1,26,
            0,253,1,229,0,252,1,1,8,0,
            110,110,0,217,109,18,0,111,0,210,
            109,136,0,196,0,109,136,0,176,196,
            0,246,109,0,31,157,0,205,244,109,
            18,164,0,111,0,0,193,109,1,177,
            0,193,109,1,0,195,1,0,172,109,
            0,185,0,109,148,10,148,172,0,180,
            0,148,172,0,9,0,0,180,0,109,
            148,10,148,0,148,0,9,0,0,135,
            30,223,109,37,0,135,223,109,30,37,
            0,135,30,37,0,135,223,109,37,0,
            135,37,0,141,0,2,0,177,110,0,
            174,0,2,110,0,193,109,1,141,0,
            2,0,175,110,0,163,1,0,168,0,
            205,221,109,18,108,240,68,0,240,68,
            0,113,3,0,0,0,111,0,205,221,
            109,18,240,68,0,3,0,0,0,111,
            0,167,0,239,109,167,0,109,167,0,
            163,112,0,206,68,0,113,0,206,70,
            0,206,69,0,218,109,18,238,108,237,
            185,0,238,108,237,185,0,3,0,0,
            111,0,237,185,0,113,0,3,0,0,
            111,0,218,109,18,237,185,0,154,0,
            153,0,152,0,151,0,150,0,197,109,
            136,0,136,0,140,59,0,189,132,189,
            168,1,56,0,110,135,0,189,168,1,
            56,0,112,0,110,135,0,189,132,189,
            132,189,1,56,0,189,132,189,1,56,
            0,189,1,56,0,112,0,112,0,110,
            135,0,140,1,48,0,140,1,48,151,
            54,0,110,112,0,151,54,0,79,2,
            114,110,112,0,140,1,60,0,151,125,
            140,1,58,0,55,135,0,140,1,58,
            0,110,135,55,135,0,150,0,171,51,
            0,140,92,130,0,29,131,0,173,1,
            0,110,120,0,173,1,20,0,110,118,
            0,236,1,113,0,140,37,113,0,140,
            1,0
        };
    };
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
    public final int scopeRhs(int index) { return scopeRhs[index]; }

    public interface ScopeState {
        public final static char scopeState[] = {0,
            555,0,834,0,2331,2276,0,3347,879,2627,
            0,1077,0,456,447,0,883,825,758,1281,
            700,1280,2265,1219,1180,1060,674,462,0,3170,
            1263,3149,3135,3124,3103,3086,2110,2800,2773,2742,
            2734,2707,2674,2634,2624,1224,2552,2525,1102,609,
            990,951,0,1162,1135,725,718,2123,2876,2346,
            2321,987,3224,2838,0,3389,3365,2096,1183,1133,
            545,454,2556,2265,851,679,1105,1768,1380,3069,
            3053,3037,3021,3005,2984,2867,2850,2828,2423,1361,
            1238,3337,3313,3299,1001,3259,3250,3239,2289,738,
            500,2051,2024,883,1999,1972,825,1947,1295,1921,
            1895,1868,1843,1817,1791,1732,942,1687,1661,1635,
            1609,1583,1557,1531,1505,1479,1453,1421,1194,1153,
            1077,788,421,462,913,758,700,0,521,492,
            0,1712,1339,659,570,421,522,0,2605,522,
            2503,2123,2457,2437,2331,527,2276,2346,987,1221,
            3062,2082,2218,2317,1320,2177,0,3471,3451,3427,
            2331,3421,527,2503,2123,2276,2876,1712,2082,2218,
            659,3374,3269,2410,2964,570,3176,421,2196,2144,
            2095,2457,2437,3413,2499,2317,2069,2605,1716,1333,
            576,1221,3408,1339,2951,2918,1279,2904,3351,3081,
            2889,1062,2470,2231,1320,2177,522,2684,3346,2579,
            3323,3274,3211,3207,2796,0,2082,1320,522,0,
            3170,3149,3135,3124,3103,3086,2110,3078,1263,3268,
            1224,1102,990,951,2334,2504,0
        };
    };
    public final static char scopeState[] = ScopeState.scopeState;
    public final int scopeState(int index) { return scopeState[index]; }

    public interface InSymb {
        public final static char inSymb[] = {0,
            0,234,7,149,136,109,250,255,109,109,
            212,210,198,8,9,7,199,185,200,70,
            69,201,68,202,109,1,4,5,3,2,
            141,204,12,180,1,197,163,134,145,141,
            109,191,210,242,197,147,109,143,5,18,
            1,1,1,237,134,206,134,206,240,206,
            134,172,148,134,163,1,12,26,20,25,
            24,14,13,10,15,17,16,1,113,256,
            19,211,46,134,163,37,1,172,74,109,
            172,213,109,1,254,2,19,108,18,108,
            18,148,10,109,1,1,1,1,1,137,
            173,140,149,167,109,18,90,75,1,37,
            49,125,1,46,134,30,135,109,114,10,
            120,122,121,124,123,127,126,129,128,130,
            109,18,164,251,109,136,147,143,180,261,
            217,59,50,52,57,56,48,54,60,58,
            150,53,51,108,136,252,229,1,238,134,
            109,18,109,10,148,193,136,109,194,173,
            173,173,173,173,125,109,1,178,177,216,
            108,12,109,236,109,140,10,2,109,135,
            223,203,102,101,100,98,99,97,96,95,
            94,93,74,77,76,10,72,73,14,13,
            85,84,83,82,81,80,79,78,86,15,
            88,87,92,91,241,109,18,109,6,140,
            108,1,1,151,1,1,49,257,171,49,
            109,46,125,1,19,2,18,218,167,219,
            109,221,108,222,148,109,1,109,180,46,
            125,125,125,125,125,172,195,109,1,46,
            114,1,217,2,223,30,135,10,121,121,
            120,120,123,123,122,122,122,122,122,122,
            126,124,128,127,235,140,129,46,109,168,
            189,140,48,140,140,49,89,49,109,253,
            109,109,221,205,74,46,109,203,109,172,
            193,109,173,135,135,49,49,244,109,189,
            132,125,1,125,125,172,46,218,239,49,
            163,134,208,205,203,193,125,205,46,246,
            258,75,37,108,247,132,189,140,151,46,
            49,208,134,166,74,171,75,37,189,132,
            125,105,134,89,171,125,189,171,125
        };
    };
    public final static char inSymb[] = InSymb.inSymb;
    public final int inSymb(int index) { return inSymb[index]; }

    public interface Name {
        public final static String name[] = {
            "",
            "[",
            "(",
            "{",
            ".",
            "->",
            "++",
            "--",
            "&",
            "*",
            "+",
            "-",
            "~",
            "!",
            "/",
            "%",
            ">>",
            "<<",
            "<",
            ">",
            "<=",
            ">=",
            "==",
            "!=",
            "^",
            "|",
            "&&",
            "||",
            "?",
            ":",
            "...",
            "=",
            "*=",
            "/=",
            "%=",
            "+=",
            "-=",
            ">>=",
            "<<=",
            "&=",
            "^=",
            "|=",
            ",",
            ">?",
            "<?",
            "$empty",
            "auto",
            "break",
            "case",
            "char",
            "const",
            "continue",
            "default",
            "do",
            "double",
            "else",
            "enum",
            "extern",
            "float",
            "for",
            "goto",
            "if",
            "inline",
            "int",
            "long",
            "register",
            "restrict",
            "return",
            "short",
            "signed",
            "sizeof",
            "static",
            "struct",
            "switch",
            "typedef",
            "union",
            "unsigned",
            "void",
            "volatile",
            "while",
            "_Bool",
            "_Complex",
            "_Imaginary",
            "integer",
            "floating",
            "charconst",
            "stringlit",
            "identifier",
            "Completion",
            "EndOfCompletion",
            "Invalid",
            "RightBracket",
            "RightParen",
            "RightBrace",
            "SemiColon",
            "typeof",
            "__alignof__",
            "__attribute__",
            "__declspec",
            "asm",
            "vector",
            "pixel",
            "bool",
            "_Decimal32",
            "_Decimal64",
            "_Decimal128",
            "__static_assert",
            "ERROR_TOKEN",
            "EOF_TOKEN",
            "]",
            ")",
            "}",
            ";",
            "identifier_token",
            "expression",
            "postfix_expression",
            "member_name",
            "type_id",
            "initializer_list",
            "unary_expression",
            "cast_expression",
            "multiplicative_expression",
            "additive_expression",
            "shift_expression",
            "relational_expression",
            "equality_expression",
            "and_expression",
            "exclusive_or_expression",
            "inclusive_or_expression",
            "logical_and_expression",
            "logical_or_expression",
            "assignment_expression",
            "expression_in_statement",
            "expression_list_actual",
            "constant_expression",
            "statement",
            "compound_statement",
            "block_item_list",
            "block_item",
            "declaration",
            "declaration_specifiers",
            "init_declarator_list",
            "simple_declaration_specifiers",
            "struct_or_union_declaration_sp" +
            "ecifiers",
            "elaborated_declaration_specifi" +
            "ers",
            "enum_declaration_specifiers",
            "typdef_name_declaration_specif" +
            "iers",
            "no_type_declaration_specifier",
            "type_qualifier",
            "no_type_declaration_specifiers",
            "simple_type_specifier",
            "struct_or_union_specifier",
            "elaborated_specifier",
            "enum_specifier",
            "type_name_specifier",
            "init_declarator",
            "complete_declarator",
            "initializer",
            "declarator",
            "struct_or_union",
            "struct_declaration_list",
            "struct_declaration",
            "specifier_qualifier_list",
            "struct_declarator_list",
            "complete_struct_declarator",
            "struct_declarator",
            "enumerator_list",
            "enumerator",
            "direct_declarator",
            "pointer_seq",
            "array_direct_declarator",
            "basic_direct_declarator",
            "knr_direct_declarator",
            "array_modifier",
            "function_direct_declarator",
            "parameter_type_list",
            "function_declarator",
            "identifier_list",
            "knr_function_declarator",
            "array_modifier_type_qualifiers",
            "type_qualifier_list",
            "parameter_list",
            "parameter_declaration",
            "complete_parameter_declarator",
            "abstract_declarator",
            "direct_abstract_declarator",
            "basic_direct_abstract_declarat" +
            "or",
            "array_direct_abstract_declarat" +
            "or",
            "initializer_seq",
            "designated_initializer",
            "designation",
            "designator_list",
            "designator",
            "external_declaration_list",
            "external_declaration",
            "declaration_list",
            "function_body",
            "attribute_or_decl_specifier",
            "attribute_or_decl_specifier_se" +
            "q",
            "word",
            "extended_decl_modifier_seq",
            "extended_decl_modifier",
            "extended_asm_param",
            "case_range_expression",
            "typeof_declaration_specifiers",
            "typeof_type_specifier",
            "field_name_designator",
            "vector_type",
            "vector_type_specifier",
            "all_specifier_qualifiers",
            "all_specifier_qualifier_list"
        };
    };
    public final static String name[] = Name.name;
    public final String name(int index) { return name[index]; }

    public final static int
           ERROR_SYMBOL      = 38,
           SCOPE_UBOUND      = 94,
           SCOPE_SIZE        = 95,
           MAX_NAME_LENGTH   = 38;

    public final int getErrorSymbol() { return ERROR_SYMBOL; }
    public final int getScopeUbound() { return SCOPE_UBOUND; }
    public final int getScopeSize() { return SCOPE_SIZE; }
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }

    public final static int
           NUM_STATES        = 389,
           NT_OFFSET         = 107,
           LA_STATE_OFFSET   = 4201,
           MAX_LA            = 2147483647,
           NUM_RULES         = 420,
           NUM_NONTERMINALS  = 155,
           NUM_SYMBOLS       = 262,
           SEGMENT_SIZE      = 8192,
           START_STATE       = 2504,
           IDENTIFIER_SYMBOL = 0,
           EOFT_SYMBOL       = 104,
           EOLT_SYMBOL       = 104,
           ACCEPT_ACTION     = 3537,
           ERROR_ACTION      = 3781;

    public final static boolean BACKTRACK = true;

    public final int getNumStates() { return NUM_STATES; }
    public final int getNtOffset() { return NT_OFFSET; }
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
    public final int getMaxLa() { return MAX_LA; }
    public final int getNumRules() { return NUM_RULES; }
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
    public final int getNumSymbols() { return NUM_SYMBOLS; }
    public final int getSegmentSize() { return SEGMENT_SIZE; }
    public final int getStartState() { return START_STATE; }
    public final int getStartSymbol() { return lhs[0]; }
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
    public final int getAcceptAction() { return ACCEPT_ACTION; }
    public final int getErrorAction() { return ERROR_ACTION; }
    public final boolean isValidForParser() { return isValidForParser; }
    public final boolean getBacktrack() { return BACKTRACK; }

    public final int originalState(int state) {
        return -baseCheck[state];
    }
    public final int asi(int state) {
        return asb[originalState(state)];
    }
    public final int nasi(int state) {
        return nasb[originalState(state)];
    }
    public final int inSymbol(int state) {
        return inSymb[originalState(state)];
    }

    public final int ntAction(int state, int sym) {
        return baseAction[state + sym];
    }

    public final int tAction(int state, int sym) {
        int i = baseAction[state],
            k = i + sym;
        return termAction[termCheck[k] == sym ? k : i];
    }
    public final int lookAhead(int la_state, int sym) {
        int k = la_state + sym;
        return termAction[termCheck[k] == sym ? k : la_state];
    }
}
